/*
 * AudioRender.h
 *
 *  Created on: 2017年3月16日
 *      Author: chuanjiang.zh
 */

#ifndef AUDIORENDER_H_
#define AUDIORENDER_H_

#include "MediaFormat.h"
#include "MediaFrame.h"

namespace av
{

class DLLEXPORT AudioRender
{
public:
	virtual ~AudioRender() {}

	/**
	 * 打开音频播放设备
	 * @param channels      通道数， 取值[1,2]
	 * @param sampleRate    采样率,取值有：8000,16000,32000
	 * @param sampleFmt     采样格式
	 * @return
	 */
	virtual int open(int channels, int sampleRate, int sampleFmt) =0;

	virtual void close() =0;

	virtual bool isOpen() =0;

	virtual int play() =0;

	virtual int pause() =0;

	virtual void stop() =0;

	virtual bool isPaused() =0;

	virtual int write(AVFrame* frame) =0;

	virtual void flush() =0;

	/**
	 * 获取音量
	 * @return
	 */
	virtual float getVolume() =0;

	/**
	 * 设置音量
	 * @param vol   取值范围：[0.0,1.0]
	 * @return
	 */
	virtual int setVolume(float vol) =0;

	virtual bool isMute() =0;

	virtual int setMute(bool muted) =0;

};


} /* namespace av */

#endif /* AUDIORENDER_H_ */
